ci: consolidate release pipeline into release-please.yml#29
Merged
Conversation
us
approved these changes
Jun 21, 2026
us
left a comment
Owner
There was a problem hiding this comment.
Thank you, @jahirvidrio — this is a genuinely nice piece of CI plumbing. 🙏 You closed exactly the gap #18 left open: automatic releases were publishing nothing, and folding build-release into release-please.yml (gated on release_created, same run, no downstream-trigger dance) is the clean fix. Deleting release.yml outright instead of leaving two half-wired workflows around is the right call.
I ran a multi-agent review across CI logic, security, and consolidation parity. Findings:
- Trigger matrix — correct on all four paths. push+release → builds; push without a release → skipped;
workflow_dispatch→ builds whilerelease-pleasestays skipped (the!cancelled()+needssemantics work because a skipped dependency still lets theifevaluate); release-please failure → no spurious build. Theinputs.tag || needs.release-please.outputs.tag_namefallback resolves right on every path. - Security — actually improved. Moving from a top-level
permissionsblock to per-job least-privilege (build-releasegets onlycontents: write) is a real hardening.RELEASE_TAGis passed viaenv:and used quoted, so no expression-injection surface. Token handling is carried over verbatim from the old workflow — nothing newly risky. - Parity — preserved. Every build step (build → strip → tarball → sha256 → upload → Homebrew formula) is intact, and the new
Verify release existspre-flight guard is a thoughtful addition that fails fast on a bad backfill. - One small note (non-blocking): the old
push: tags: v*trigger is gone. That's fine — and arguably correct, since GitHub suppresses runs fromGITHUB_TOKEN-created tags anyway (which is why the old auto-build never fired).workflow_dispatchcovers the manual/backfill case you documented. No change needed; just flagging it for the record.
Clean, well-scoped, well-described. Merging now — and thanks again for the careful write-up, including the v0.4.1 backfill note. 🚀
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the release chain #18 left manual: #18 added
workflow_dispatchto rebuild a tag by hand, but automatic releases still publish nothing. This movesbuild-releaseintorelease-please.yml, gated onrelease_created, so it runs in the same run as the release — no downstream-trigger needed.workflow_dispatchis preserved for backfill/recovery.What changed
release-please.yml: addedworkflow_dispatch(taginput), per-job permissions,outputs:(release_created,tag_name), and abuild-releasejob (needs: release-please,runs-on: macos-26) — build → tarball → SHA256 → asset upload → Homebrew tap update.release.yml: deleted — body absorbed verbatim intobuild-release.